package com.example.rbac.handler;
import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler;
import org.springframework.stereotype.Component;
import javax.naming.AuthenticationException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
//自定义控制器实现认证失败控制器
//用户名密码认证失败处理器
//实现bean的注入
@Component("myAuthenticationFailHandler")
public class MyAuthenticationFailHandler extends SimpleUrlAuthenticationFailureHandler {
    //用户名密码错误执行
    public void onAuthenticationFailure(HttpServletRequest request,
                                        HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException{
        //获取从客户端输入的用户名
        String username=request.getParameter("username");
        //获取从客户端输入的密码
        String password=request.getParameter("password");
        //从服务器响应给浏览器
        //作用是使客户端浏览器，区分不同种类的数据，并根据不同的参数调用浏览器内不同的程序嵌入模块来处理相应的数据。
        response.setContentType("application/json;charset=utf-8");
        PrintWriter out=response.getWriter();
        //返回到页面的内容
        out.write("{\"status\":\"error\",\"message\":\"用户名或密码错误\"}");
        out.flush();
        out.close();
    }
}
